#include "pch.h"
#include "functions.hpp"

#include <cmath>




float math::sqrt(float val)
{
	return std::sqrt(val);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

double math::sqrt(double val)
{
	return std::sqrt(val);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

int32  math::sqrt(int32 val)
{
	return (int32)floor(sqrt((float)val) + 0.5f);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

uint32 math::sqrt(uint32 val)
{
	return (uint32)floor(sqrt((float)val) + 0.5f);
}
///////////////////////////////////////////////////////////////////////////////////////////////////




uint8 math::pow(uint8 base, uint8 exp)
{
	uint16 val = 1;

	while(exp--)
		val *= base;

	return boost::numeric_cast<uint8>(val);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

uint16 math::pow(uint16 base, uint16 exp)
{
	uint32 val = 1;

	while(exp--)
		val *= base;

	return boost::numeric_cast<uint16>(val);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

uint32 math::pow(uint32 base, uint32 exp)
{
	uint64 val = 1;

	while(exp--)
		val *= base;

	return boost::numeric_cast<uint32>(val);
}
///////////////////////////////////////////////////////////////////////////////////////////////////

uint64 math::pow(uint64 base, uint64 exp)
{
	uint64 val = 1;

	while(exp--)
		val *= base;

	return val;
}
///////////////////////////////////////////////////////////////////////////////////////////////////
